package com.psbc.swagger.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2  //开启swagger2
public class SwaggerConfig {

    //如何配置多个分组，多个人协同开发，只需要配置多个Docket实例即可
    @Bean
    public Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("nannan");
    }
    @Bean
    public Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("xiaoA");
    }
    @Bean
    public Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("xiaoB");
    }
    //配置swagger的bean实例Docket
    @Bean
    public Docket docket(Environment environment){

        //我们还可以配置swagger在生产环境中生效，然后在上线环境中不生效的模式
        Profiles profiles = Profiles.of("dev","test");
        //通过environment.acceptsProfiles判断是否处在自己设定的环境当中
        boolean flag = environment.acceptsProfiles(profiles);



        return new Docket(DocumentationType.SWAGGER_2)
                //配置要扫面的接口
                //RequestHandlerSelectors，配置要扫面接口的方式
                //basePackage 配置要扫面接口的包
                .enable(flag) //是否启动swagger，默认是true，启动的，false就是不启动
                .groupName("dalei")//多个人协同开发的时候可以设置每个人自己的组，进行接口的开发
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.psbc.swagger.controller"))
                //这个是一个路径过滤，就是要扫面这个swagger路径下的接口,路径没有swagger的接口不进行扫描
 //             .paths(PathSelectors.ant("/swagger/**"))
                .build();
    }
}
